Color space images containing hundreds of millions of colors are generally not directly reproducible by an inkjet printer. In this regard, most color inkjet printers are only capable of producing a basic set of eight colors: red, green, blue, cyan, yellow, magenta, black and perhaps another shade of cyan and another shade of magenta. Thus, such printers may be able to reproduce hundreds, thousands, or even tens of millions of colors, but certainly not hundreds of millions of colors.
Since ink jet printers are incapable of reproducing such large numbers of colors, such printers typically employ, what is known to those skilled in the art as, a half toning process. Half toning is an algorithm process that approximates unreachable colors on a receiving medium by clustering drops or dots of different color inks on a medium surface to "average" them together to approximate a desired color.
For example, given an inkjet printer that produces eight colors as mentioned-above, the color orange can be perceptibly reproduced by clustering a group of red and yellow dots in close proximity to one another on the medium surface. The cluster of individual red and yellow dots when viewed by the human eye is perceived as the color orange. In this regard, the human eye is incapable of resolving each individual dot. Thus, the human eye will average the dots together, and the viewer will perceive that he or she is viewing the color orange.
There are many different half-toning methods utilized in converting one color space into another color space. However, the method considered to produce the highest quality color space images is called an error diffusion method.
The error diffusion method involves a process of selecting a printer pixel color that closely matches that of another device color space pixel color, and then printing the selected color. Since the printer color will not usually be the exact same color as that of the other color space pixel color, there will be a color error associated with the conversion process from one color space to the other color space. This error is then divided and diffused into the colors of the pixels in the immediate neighborhood of the printed pixel that have not yet been printed.
Thus for example, if the other color space pixel color is orange, and the error diffusion process selects the closest printer pixel color of red, there will be a resulting error of too much red and not enough yellow. In this case, the error diffusion process would add a little yellow to the color of the surrounding pixels to be printed and remove a little red from the color of the surrounding pixels. Following this procedure, when the next pixel is processed, the printer will select a color that is closest to this modified color, i.e. the original pixel color that has some yellow added and some red removed. When this new pixel is printed it too will have an associated color error, which is in turn, propagated to the pixels surrounding the new location. This process is continued until a row of pixels is processed, at which time the next row is processed. This form of error diffusion was first proposed by Robert Floyd and Louis Steinberg in their published article "An Adaptive Algorithm Spatial Grey Scale" found in the Society of Information Display: Vol. 17, No. 75 (1975). In short, the Floyd et al. process taught that error values associated with the translation of each pixel could be diffused to adjacent pixels to provide a smoother transition between the different color space images.
While processors that have implemented the Floyd et al. algorithm have been successful in helping to improve image quality, the enjoyed improved image quality has been expensive and time consuming. In this regard, the Floyd et al. process as applied to raster scan type printer requires that image data be processed row by row since the errors from one row must be known before the next row can be processed. Thus, as data is processed, the converted rows of image data must be retained in a storage unit until enough rows have been processed and made available for printing.
As is known to those skilled in the art, the typical inkjet printer sweeps its print head transverse to the direction of the path of travel followed by the print medium to effect a raster scan printing process. In this regard, as the print head travels above the print medium, a series of inkjet nozzles on the print head eject or fire ink downwardly onto the medium to create a horizontal "swath" that is composed of a large number of pixel rows as determined by the column height of the print head nozzles. For example, if a print head has a column of 200 nozzles, and one pixel is printed per nozzle, a total of 200 rows of image pixels must be processed and stored in memory before printing of the swath can commence. Printing partial swaths having fewer rows then there are nozzles, is not an option. In this regard, it takes too much time for a partial sweep to be executed which would severely reduce the throughput of the printer. In short then, as a large amount of image data must be converted and stored, large amounts of printer memory are required, which in turn greatly increases the cost of the printer.
Therefore it would be highly desirable to have a new and improved printer with an error diffusion system that is fast and efficient permitting conversion and processing on the fly in a pipeline fashion without the need of using large expensive random access memory storage devices.